package 越短越合法

func countKConstraintSubstrings(s string, k int) int {
	n := len(s)
	count := 0
	left := 0
	cnt0, cnt1 := 0, 0
	if n == 0 {
		return 0
	}

	for right, c := range s {
		if c == '1' {
			cnt1++
		} else {
			cnt0++
		}
		// 2. 左缩窗口：仅当 0>k 且 1>k 时收缩（子串不符合条件）
		for (cnt0 > k && cnt1 > k) && left <= right {
			if s[left] == '1' {
				cnt1--
			} else {
				cnt0--
			}
			left++
		}
		count += right - left + 1
	}
	return count
}
